package net.spunofbook;

import net.spunofbook.modelo.ClienteRepositorio;
import net.spunofbook.negocio.Cliente;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class TelaClienteCadastro extends Activity {

	private Cliente cliente = new Cliente();
	private EditText nome;
	private EditText cpf;
	private EditText telefone;
	private EditText endereco;
	private Button botaoSalvar;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tela_cliente_cadastro);
		iniciarVariaveis();

		Intent intent = getIntent();
		if (intent != null) {
			Bundle bundle = intent.getExtras();
			if (bundle != null) {
				ePraEditar(bundle);
			} else {
				ePraCadastrar();
			}
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		getMenuInflater().inflate(R.menu.tela_cliente_cadastro, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		super.onOptionsItemSelected(item);
		Context v = getBaseContext();
		switch (item.getItemId()) {
		case R.id.telaClienteCadastroMenu_inicio:
			chamarTelaInicio(v);
			break;
		case R.id.telaClienteCadastroMenu_cliente:
			chamarTelaCliente(v);
			break;
		default:
			break;
		}

		return true;
	}
	
	public void iniciarVariaveis() {
		nome = (EditText) findViewById(R.id.telaClienteCadastro_nome);
		cpf = (EditText) findViewById(R.id.telaClienteCadastro_cpf);
		telefone = (EditText) findViewById(R.id.telaClienteCadastro_telefone);
		endereco = (EditText) findViewById(R.id.telaClienteCadastro_endereco);
		botaoSalvar = (Button) findViewById(R.id.telaClienteCadastro_salvar);
	}
	
	private void ePraEditar(Bundle bundle) {
		/* Armazena os valores no objeto Cliente */
		cliente.setId(bundle.getInt("id"));
		cliente.setNome(bundle.getString("nome"));
		cliente.setTelefone(bundle.getString("telefone"));
		cliente.setCpf(bundle.getString("cpf"));
		cliente.setEndereco(bundle.getString("endereco"));

		/* Define Valores para o usuario ver na tela (formulario) */
		nome.setText(cliente.getNome());
		telefone.setText(cliente.getTelefone());
		cpf.setText(cliente.getCpf());
		endereco.setText(cliente.getEndereco());

		botaoSalvar.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				ClienteRepositorio comando = new ClienteRepositorio(getBaseContext());
				comando.atualizar(cliente);
				Toast.makeText(	getBaseContext(),
						"\" " + cliente.getNome() + "\"" + getString(R.string.aviso_cliente_atualizado),
						Toast.LENGTH_LONG).show();
			}
		});
	}

	private void ePraCadastrar() {
		// Define funcao ao clicar em salvar
		botaoSalvar.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// Validacao dos dados, avaliando se nome e vazio.
				String teste2 = nome.getText().toString();
				
				if (nome.getText().toString().equals("")) {
					Toast.makeText(v.getContext(), getString(R.string.erro_nome_vazio),
							Toast.LENGTH_SHORT).show();
				} else {
					salvarCliente(v);
				}
			}
		});
	}

	private void salvarCliente(View view) {
		cliente.setNome(nome.getText().toString());
		cliente.setCpf(cpf.getText().toString());
		cliente.setTelefone(telefone.getText().toString());
		cliente.setEndereco(endereco.getText().toString());

		ClienteRepositorio bdSave = new ClienteRepositorio(view.getContext());
		bdSave.inserir(cliente);

		Toast.makeText(view.getContext(), getString(R.string.aviso_cLiente_salvo),	Toast.LENGTH_SHORT).show();
		
		limparDados();
	}

	private void limparDados() {
		nome.setText("");
		cpf.setText("");
		telefone.setText("");
		endereco.setText("");
	}

	private void chamarTelaCliente(Context context) {
		startActivity(new Intent(context, TelaCliente.class));
		finish();
	}

	private void chamarTelaInicio(Context context) {
		startActivity(new Intent(context, TelaPrincipal.class));
		finish();
	}

}
